home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 August: Tool Chest / Dev.CD Aug 94.toast / New System Software Extensions / OpenDoc A6 / OpenDoc Parts Framework / OPF / Found / FWStream / Include / FWStrmF.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-21  |  9.4 KB  |  345 lines  |  [TEXT/MPS ]

  1. #ifndef FWSTRMF_H
  2. #define FWSTRMF_H
  3. //========================================================================================
  4. //
  5. //    File:                FWStrmF.h
  6. //    Release Version:    $ 1.0d1 $
  7. //
  8. //    Creation Date:        3/28/94
  9. //
  10. //    Copyright:    © 1994 by Apple Computer, Inc., all rights reserved.
  11. //
  12. //========================================================================================
  13.  
  14. #ifndef FWASINKS_H
  15. #include "FWASinks.h"
  16. #endif
  17.  
  18. #ifndef FWPRIEXC_H
  19. #include "FWPriExc.h"
  20. #endif
  21.  
  22. //========================================================================================
  23. //    CLASS FW_CReadableStreamFormatter
  24. //========================================================================================
  25.  
  26. class FW_CReadableStreamFormatter : public _FW_CAutoDestructObject
  27. {
  28.  
  29. public:
  30.  
  31.     FW_CReadableStreamFormatter();
  32.     virtual~ FW_CReadableStreamFormatter();
  33.  
  34.     virtual void ReadBytes(FW_CSink& sink,
  35.                            void* destination,
  36.                            long count);
  37.  
  38.     virtual void ReadChars(FW_CSink& sink,
  39.                            char* destination,
  40.                            long count);
  41.     
  42.     virtual void ReadSignedChars(FW_CSink& sink,
  43.                                  signed char* destination,
  44.                                  long count);
  45.     
  46.     virtual void ReadUnsignedChars(FW_CSink& sink,
  47.                                    unsigned char* destination,
  48.                                    long count);
  49.  
  50.     virtual void ReadNullTerminatedString(FW_CSink& sink,
  51.                                           char* destination);
  52.  
  53.     virtual void ReadInts(FW_CSink& sink,
  54.                           int* destination,
  55.                           long count);
  56.  
  57.     virtual void ReadUnsignedInts(FW_CSink& sink,
  58.                                   unsigned int* destination,
  59.                                   long count);
  60.  
  61.     virtual void ReadShorts(FW_CSink& sink,
  62.                             short* destination,
  63.                             long count);
  64.  
  65.     virtual void ReadUnsignedShorts(FW_CSink& sink,
  66.                                     unsigned short* destination,
  67.                                     long count);
  68.  
  69.     virtual void ReadLongs(FW_CSink& sink,
  70.                            long* destination,
  71.                            long count);
  72.     
  73.     virtual void ReadUnsignedLongs(FW_CSink& sink,
  74.                                    unsigned long* destination,
  75.                                    long count);
  76.  
  77.     virtual void ReadFloats(FW_CSink& sink,
  78.                             float* destination,
  79.                             long count);
  80.  
  81.     virtual void ReadDoubles(FW_CSink& sink,
  82.                              double* destination,
  83.                              long count);
  84.  
  85. #ifdef FW_COMPILER_SUPPORTS_LONG_DOUBLE
  86.     virtual void ReadLongDoubles(FW_CSink& sink,
  87.                                  long double* destination,
  88.                                  long count);
  89. #endif
  90.  
  91. protected:
  92.  
  93.     void Identity(FW_CSink& sink,
  94.                   void* destination,
  95.                   long count,
  96.                   long itemSize);
  97.  
  98. private:
  99.     FW_CReadableStreamFormatter(const FW_CReadableStreamFormatter& formatter);
  100.     FW_CReadableStreamFormatter& operator=(const FW_CReadableStreamFormatter& formatter);
  101.         // Shouldn't copy instances of this class.
  102. };
  103.  
  104.  
  105. //======================================================================================
  106. //    class FW_CSwapBytesFormatter
  107. //======================================================================================
  108.  
  109. class FW_CSwapBytesFormatter : public FW_CReadableStreamFormatter
  110. {
  111. public:
  112.  
  113.     FW_CSwapBytesFormatter();
  114.     virtual~ FW_CSwapBytesFormatter();
  115.  
  116.     virtual void ReadInts(FW_CSink& sink,
  117.                           int* destination,
  118.                           long count);
  119.  
  120.     virtual void ReadUnsignedInts(FW_CSink& sink,
  121.                                   unsigned int* destination,
  122.                                   long count);
  123.  
  124.     virtual void ReadShorts(FW_CSink& sink,
  125.                             short* destination,
  126.                             long count);
  127.  
  128.     virtual void ReadUnsignedShorts(FW_CSink& sink,
  129.                                     unsigned short* destination,
  130.                                     long count);
  131.  
  132.     virtual void ReadLongs(FW_CSink& sink,
  133.                            long* destination,
  134.                            long count);
  135.  
  136.     virtual void ReadUnsignedLongs(FW_CSink& sink,
  137.                                    unsigned long* destination,
  138.                                    long count);
  139. };
  140.  
  141.  
  142. //========================================================================================
  143. //    CLASS FW_CWritableStreamFormatter
  144. //========================================================================================
  145.  
  146. class FW_CWritableStreamFormatter : public _FW_CAutoDestructObject
  147. {
  148.  
  149. public:
  150.  
  151.     FW_CWritableStreamFormatter();
  152.     virtual~ FW_CWritableStreamFormatter();
  153.  
  154.     virtual void WriteBytes(FW_CSink& sink,
  155.                             const void* source,
  156.                             long count);
  157.  
  158.     virtual void WriteChars(FW_CSink& sink,
  159.                             const char* source,
  160.                             long count);
  161.  
  162.     virtual void WriteSignedChars(FW_CSink& sink,
  163.                                   const signed char* source,
  164.                                   long count);
  165.     
  166.     virtual void WriteUnsignedChars(FW_CSink& sink,
  167.                                     const unsigned char* source,
  168.                                     long count);
  169.  
  170.     virtual void WriteNullTerminatedString(FW_CSink& sink,
  171.                                            const char* source);
  172.  
  173.     virtual void WriteInts(FW_CSink& sink,
  174.                            const int* source,
  175.                            long count);
  176.     
  177.     virtual void WriteUnsignedInts(FW_CSink& sink,
  178.                                    const unsigned int* source,
  179.                                    long count);
  180.  
  181.     virtual void WriteShorts(FW_CSink& sink,
  182.                              const short* source,
  183.                              long count);
  184.     
  185.     virtual void WriteUnsignedShorts(FW_CSink& sink,
  186.                                      const unsigned short* source,
  187.                                      long count);
  188.  
  189.     virtual void WriteLongs(FW_CSink& sink,
  190.                             const long* source,
  191.                             long count);
  192.     
  193.     virtual void WriteUnsignedLongs(FW_CSink& sink,
  194.                                     const unsigned long* source,
  195.                                     long count);
  196.  
  197.     virtual void WriteFloats(FW_CSink& sink,
  198.                              const float* source,
  199.                              long count);
  200.  
  201.     virtual void WriteDoubles(FW_CSink& sink,
  202.                               const double* source,
  203.                               long count);
  204.  
  205. #ifdef FW_COMPILER_SUPPORTS_LONG_DOUBLE
  206.     virtual void WriteLongDoubles(FW_CSink& sink,
  207.                                   const long double* source,
  208.                                   long count);
  209. #endif
  210.  
  211. protected:
  212.  
  213.     void Identity(FW_CSink& sink,
  214.                   const void* source,
  215.                   long count,
  216.                   long itemSize);
  217.  
  218. private:
  219.     FW_CWritableStreamFormatter(const FW_CWritableStreamFormatter& formatter);
  220.     FW_CWritableStreamFormatter& operator=(const FW_CWritableStreamFormatter& formatter);
  221.         // Shouldn't copy instances of this class.
  222. };
  223.  
  224.  
  225. //========================================================================================
  226. //    CLASS FW_XReadableStreamFormatter
  227. //========================================================================================
  228.  
  229. class FW_XReadableStreamFormatter : public FW_XPrivException
  230. {
  231.  
  232. public:
  233.  
  234.     FW_XReadableStreamFormatter(long itemsRequested,
  235.                                 long itemSize,
  236.                                 long itemsRead);
  237.     FW_XReadableStreamFormatter(const FW_XReadableStreamFormatter& formatter);
  238.     virtual ~FW_XReadableStreamFormatter();
  239.     _FW_EXCEPTION_DEFINE(FW_XReadableStreamFormatter)
  240.  
  241.     const long GetItemsRequested() const;
  242.     const long GetItemSize() const;
  243.     const long GetItemsRead() const;
  244.  
  245. private:
  246.  
  247.     const long fItemsRequested;
  248.     const long fItemSize;
  249.     const long fItemsRead;
  250. };
  251.  
  252.  
  253. //========================================================================================
  254. //    CLASS FW_XWritableStreamFormatter
  255. //========================================================================================
  256.  
  257. class FW_XWritableStreamFormatter : public FW_XPrivException
  258. {
  259.  
  260. public:
  261.  
  262.     FW_XWritableStreamFormatter(long itemsRequested,
  263.                                 long itemSize,
  264.                                 long itemsWritten);
  265.     FW_XWritableStreamFormatter(const FW_XWritableStreamFormatter& formatter);
  266.     virtual ~FW_XWritableStreamFormatter();
  267.     _FW_EXCEPTION_DEFINE(FW_XWritableStreamFormatter)
  268.  
  269.     const long GetItemsRequested() const;
  270.     const long GetItemSize() const;
  271.     const long GetItemsWritten() const;
  272.  
  273. private:
  274.  
  275.     const long fItemsRequested;
  276.     const long fItemSize;
  277.     const long fItemsWritten;
  278. };
  279.  
  280.  
  281. //========================================================================================
  282. //    CLASS FW_XReadableStreamFormatter - inline methods
  283. //========================================================================================
  284.  
  285. //----------------------------------------------------------------------------------------
  286. //    FW_XReadableStreamFormatter::GetItemsRequested
  287. //----------------------------------------------------------------------------------------
  288.  
  289. inline const long FW_XReadableStreamFormatter::GetItemsRequested() const
  290. {
  291.     return fItemsRequested;
  292. }
  293.  
  294. //----------------------------------------------------------------------------------------
  295. //    FW_XReadableStreamFormatter::GetItemSize
  296. //----------------------------------------------------------------------------------------
  297.  
  298. inline const long FW_XReadableStreamFormatter::GetItemSize() const
  299. {
  300.     return fItemSize;
  301. }
  302.  
  303. //----------------------------------------------------------------------------------------
  304. //    FW_XReadableStreamFormatter::GetItemsRead
  305. //----------------------------------------------------------------------------------------
  306.  
  307. inline const long FW_XReadableStreamFormatter::GetItemsRead() const
  308. {
  309.     return fItemsRead;
  310. }
  311.  
  312.  
  313. //========================================================================================
  314. //    CLASS FW_XWritableStreamFormatter - inline methods
  315. //========================================================================================
  316.  
  317. //----------------------------------------------------------------------------------------
  318. //    FW_XWritableStreamFormatter::GetItemsRequested
  319. //----------------------------------------------------------------------------------------
  320.  
  321. inline const long FW_XWritableStreamFormatter::GetItemsRequested() const
  322. {
  323.     return fItemsRequested;
  324. }
  325.  
  326. //----------------------------------------------------------------------------------------
  327. //    FW_XWritableStreamFormatter::GetItemSize
  328. //----------------------------------------------------------------------------------------
  329.  
  330. inline const long FW_XWritableStreamFormatter::GetItemSize() const
  331. {
  332.     return fItemSize;
  333. }
  334.  
  335. //----------------------------------------------------------------------------------------
  336. //    FW_XWritableStreamFormatter::GetItemsWritten
  337. //----------------------------------------------------------------------------------------
  338.  
  339. inline const long FW_XWritableStreamFormatter::GetItemsWritten() const
  340. {
  341.     return fItemsWritten;
  342. }
  343.  
  344. #endif
  345.